<?php

class PanierController extends Controller
{

	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules()
	{
		return array(
		array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('ajouter','annuler','augmenterQuantite','diminuerQuantite','index','supprimer'),
				'users'=>array('*'),
		),
		array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array(),
				'users'=>array('@'),
		),
		array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array(),
				'users'=>array('admin'),
		),
		array('deny',  // deny all users
				'users'=>array('*'),
		),
		);
	}

	public function actionIndex() {
		$model = new Panier();
		if(isset($_POST['Panier'])) {
			$model->attributes = $_POST['Panier'];
			if($model->validate()) {
				Panier::razTimeOutPanier();
				if (!Yii::app()->user->isGuest) {
					$client = Client::getClientFromUser();
					if($client != null && isset($client)) {
						$this->redirect($this->createUrl("/client/update",array("id"=>$client->id)));
					}
					else {
						$this->redirect($this->createUrl("/client/create"));
					}
				}
				else {
					$this->redirect($this->createUrl("/user/login/loginDepuisPanier"));
				}
			}
		}
		$this->render('index', array(
			'totalPanier'=>Panier::montantGlobal(),
			'totalParArtiste'=>Panier::montantParArtiste(),
			'timeOutPanier'=>Panier::timeOutPanier(),
			'model'=>$model
		)
		);
	}

	public function actionAjouter()	{
		$this->ajouterArticle($_POST["idProduit"]);
		$this->redirect($this->createUrl("/panier"));
	}

	public function actionAnnuler() {
		unset($_POST['Panier']);
		$panier=array();
		Panier::setContenuPanier($panier);
		$this->redirect($this->createUrl("/panier"));
	}

	/**
	 * Verifie si le panier existe, le créé sinon
	 * @return booleen
	 */
	function creationPanier(){

		//if (!isset($_SESSION['panier'])){
		$panier=array();
		$panier['idProduit'] = array();
		//}
		return true;
	}

	/**
	 * Ajoute un article dans le panier
	 * @param string $libelleProduit
	 * @param int $qteProduit
	 * @param float $prixProduit
	 * @return void
	 */
	public function ajouterArticle($idProduit){
		$panier = Panier::getContenuPanier();
		if(!isset($panier)) {
			$panier = array();
		}
		$trouve = "false";
		if(isset($panier)) {
			foreach($panier as $produitPanier) {
				if($produitPanier['idProduit']==$idProduit) {
					$trouve = "true";
					$this->modifierQTeArticle($idProduit, 1);
					break;
				}
			}
			if($trouve != "true") {
				$produit = Produit::model()->findByPk($idProduit);
				$panierTmp['idProduit'] = $idProduit;
				$panierTmp['idArtiste'] = $produit->id_artiste;
				$panierTmp['nomArtiste'] = $produit->artiste->client->nom;
				$panierTmp['prenomArtiste'] = $produit->artiste->client->prenom;
				$panierTmp['urlImageProduit']=$produit->urlImage;
				$panierTmp['nomProduit']=$produit->nom;
				$panierTmp['descriptionProduit']=$produit->description;
				$panierTmp['qteProduit']=1;
				$panierTmp['prixProduit']=$produit->prix;
				$panierTmp['fdpProduit']=$produit->fdp;
				$panier[] = $panierTmp;
				Panier::setContenuPanier($panier);
			}
		}
	}

	public function actionAugmenterQuantite($idProduit) {
		$this->modifierQTeArticle($idProduit, 1);
		$this->redirect($this->createUrl("/panier"));
	}

	public function actionDiminuerQuantite($idProduit) {
		$this->modifierQTeArticle($idProduit, -1);
		$this->redirect($this->createUrl("/panier"));
	}

	/**
	 * Modifie la quantité d'un article
	 * @param $libelleProduit
	 * @param $qteProduit
	 * @return void
	 */
	public function modifierQTeArticle($idProduit,$qteProduitAAjouter){
		$panier = Panier::getContenuPanier();
		//Recharche du produit dans le panier
		$panierTmp = array();
		if(isset($panier)) {
			foreach($panier as $produitPanier) {
				if($produitPanier['idProduit']==$idProduit) {
					$produitPanier['qteProduit']+=$qteProduitAAjouter;
				}
				$panierTmp[] = $produitPanier;
			}
			Panier::setContenuPanier($panierTmp);
		}
	}

	/**
	 * Supprime un article du panier
	 * @param $libelleProduit
	 * @return unknown_type
	 */
	public function actionSupprimer($idProduit){
		$panier = Panier::getContenuPanier();
		//Recharche du produit dans le panier
		$panierTmp = array();
		if(isset($panier)) {
			foreach($panier as $produitPanier) {
				if($produitPanier['idProduit']!=$idProduit) {
					$panierTmp[] = $produitPanier;
				}
			}
			Panier::setContenuPanier($panierTmp);
			$this->redirect($this->createUrl("/panier"));
		}
	}
	
}